// HJ71 字符串通配符
// https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036
// 问题描述：在计算机中，通配符一种特殊语法，广泛应用于文件搜索、数据库、正则表达式等领域。
// 现要求各位实现字符串通配符的算法。
// 要求：实现如下2个通配符：
// *：匹配0个或以上的字符（注：能被*和?匹配的字符仅由英文字母和数字0到9组成，下同）
// ？：匹配1个字符.注意：匹配时不区分大小写。
// 输入通配符表达式；一组字符串。
// 输出返回不区分大小写的匹配结果，匹配成功输出true，匹配失败输出false
// 数据范围：字符串长度：1\le s\le 100\1≤s≤100
// 输入一个带有通配符的字符串，再输入一个需要匹配的字符串
// 输出返回不区分大小写的匹配结果，匹配成功输出true，匹配失败输出false
// 输入：
// te?t*.*
// txt12.xls
// 输出：false
// 输入：z
// zz
// 输出：false
// 输入：pq
// pppq
// 输出：false
// 输入：**Z
// 0QZz
// 输出：true
// 输入：?*Bc*?
// abcd
// 输出：true
// 输入：h*?*a
// h#a
// 输出：false
// 根据题目描述可知能被*和?匹配的字符仅由英文字母和数字0到9组成，所以?不能匹配#，故输出false
// 输入：p*p*qp**pq*p**p***ppq
// pppppppqppqqppqppppqqqppqppqpqqqppqpqpppqpppqpqqqpqqp
// 输出：false
#include <iostream>
using namespace std;
bool match(string a, string b) {
  // 可以做一下剪枝
  for (int i = 0, j = 0; i < a.size(); i++, j++) {
    if (a[i] == '*') {
      bool f = false;
      string s = a.substr(i + 1);
      for (int k = j; k < b.size(); k++) {
        f = f || match(s, b.substr(k));
      }
      return f;
    } else if (a[i] == '?') {
      continue;
    } else if (a[i] != b[j]) {
      return false;
    }
  }
  return true;
}
int main() {
  string a, b;
  while (getline(cin, a)) {
    getline(cin, b);
    if (match(a, b)) {
      cout << "true" << endl;
    } else {
      cout << "false" << endl;
    }
  }
  return 0;
}